#ifndef PANTSURENDERDEVICE_H_
#define PANTSURENDERDEVICE_H_

#include <Windows.h>
#include <gl/gl.h>
#include <gl/glu.h>
#include "SceneManager.h"

namespace Pantsu {

	class PantsuRenderDevice {

	protected:
		HWND	  m_hWndMain;
		HINSTANCE m_hInstance;

	public:
		PantsuRenderDevice() {}
		virtual ~PantsuRenderDevice() {}
		
		virtual HRESULT Init( int i_iWidth, int i_iHeight ) = 0;
		virtual void    RenderOneFrame() = 0;
		virtual void	DeInit()      = 0;

		virtual	void    Release()	= 0;
		virtual bool    IsRunning() = 0;
		
		virtual HRESULT UseWindow( UINT i_nHwnd ) = 0;
		virtual HRESULT BeginRendering( bool i_bClearPixel, bool i_bClearDepth, bool i_ClearStencil ) = 0;
		virtual void    EndRendering() = 0;
		virtual HRESULT Clear( bool i_bClearPixel, bool i_bClearDepth, bool i_bClearStencil ) = 0;

		inline void SetSceneManager( SceneManager *i_scenemgr ) {
			m_pSceneManager = i_scenemgr;
		}

	protected:
		SceneManager *m_pSceneManager;
		
	};
}

#endif